//package com.ocl.www.inter;
//
//import java.awt.image.BufferedImage;
//import java.awt.image.PixelGrabber;
//import java.io.*;
//import java.lang.reflect.Method;
//import java.util.*;
//
//import javax.imageio.ImageIO;
//
//import match.Matching;
//import match.MatchingResult;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.MediaType;
//import org.springframework.util.StringUtils;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestMethod;
//import org.springframework.web.bind.annotation.RestController;
//
//import com.ocl.www.constant.Code;
//import com.ocl.www.domain.Product;
////import com.ocl.www.dto.MatchingResult;
//import com.ocl.www.service.ProductService;
//
//import sun.misc.BASE64Decoder;
//
//@SuppressWarnings("restriction")
//@RestController
//@RequestMapping("/imageMatch")
//public class ImageMatchInter {
//
//	@Autowired
//	private ProductService productService;
//
//	/**
//	 *
//	 * @Title: getProducts
//	 * @Description: 取胶囊信息，目前仅是作测试用
//	 * @param: @param pixel
//	 * @param: @param width
//	 * @param: @param height
//	 * @param: @return
//	 * @return: Map<String,Object>
//	 * @throws
//	 */
//	@SuppressWarnings({ "rawtypes", "unchecked" })
//	@RequestMapping(value = "/getProducts", method = RequestMethod.GET)
//	public Map<String, Object> getProducts(String pixel, String width, String height) {
//		Map<String, Object> resultMap = new HashMap<String, Object>();
//		System.out.println("matching...");
//		List<Product> products = new ArrayList<Product>();
//		MatchingResult[] results =  new MatchingResult[3];
//		MatchingResult mr1 = new MatchingResult();
//		mr1.setmStrName("/data/test/DB_img/CDR-USA-PTC-03.bmp");
//		mr1.setmNSimilary(77);
//		mr1.setmNFlag(2);
//		results[0] = mr1;
//		try {
//			products = productService.findByMainPicture(results);
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		if (products != null && products.size() > 0) {
//			resultMap.put("result", products);
//		}
//		return resultMap;
//	}
//
//	@SuppressWarnings({ "rawtypes", "unchecked" })
//	@RequestMapping(value = "/getMatchImages", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
//	public Map<String, Object> getMatchImages(String pixel, String width, String height,String type) {
//		Map<String, Object> resultMap = new HashMap<String, Object>();
//		System.out.println("matching...");
//
//		try {
//			List<Product> products = new ArrayList<Product>();
//			List<String> productsNum = new ArrayList<String>();
//			if (!StringUtils.isEmpty(pixel) && !StringUtils.isEmpty(width) && !StringUtils.isEmpty(height)) {
//				System.out.println("---param is not empty .");
//				int w = Integer.parseInt(width), h = Integer.parseInt(height);
////				BufferedImage image = generateImage(pixel);
//				//依据像素字符串pixel生成新图片，得到图片路径imgpath
//				String imgPath = saveImg(pixel);
////				System.out.println("---image="+image);
//
////				int[] i = new int[w * h];
////				image.getRGB(0, 0, w, h, i, 0, 0);
//
////				String s = "/data/test/user_img/1.bmp";
//				System.out.println(imgPath);
//				File file = new File(imgPath);
//				BufferedImage imageNew = null;
//				try
//				{
//					//将图片加载到内存中（便于使用）
//					imageNew = ImageIO.read(file);
//				}
//				catch (IOException e) {
//					e.printStackTrace();
//				}
//				int iw = imageNew.getWidth();
//				int ih = imageNew.getHeight();
//				System.out.println("image width is£º"+iw+";image height is£º"+ih+"");
//				int[] pixelNew=new int[iw*ih];
//				//将imageNew图片从坐标（0,0）开始的长iw和宽ih抓取到数组pixelNew中
//				PixelGrabber pg=new PixelGrabber(imageNew,0,0,iw,ih,pixelNew,0,iw);
//				try
//				{
//					System.out.println("check if read the pixel successfully"+pg.grabPixels());
//				} catch (InterruptedException ex)
//				{
//					ex.printStackTrace();
//				}
//				System.out.println("---pixelLenght="+pixelNew.length);
////				Class c = Class.forName("Matching");
////				Method m = c.getDeclaredMethod("matching", int[].class, int.class, int.class);
////				Object object = m.invoke(c.newInstance(), pixelNew, iw, ih);
////				Object object = m.invoke(c.newInstance(), i, w, h);
//
//				Matching matching = new Matching();
////				new Matching().MatchingResult();
//				//将pixelNew图片数组，和宽高信息传入matching中的图库中匹配并返回匹配结果集MatchingResult（包含三条匹配信息，每条信息有：特征值，产品名称，产品分类三个字段信息）
//				MatchingResult[] results = matching.matching(pixelNew, iw, ih);
//
//				System.out.println("results="+results);
//				if(null!=results)
//					System.out.println("results="+results.length);
//				if (results.length >0){
//					//返回具体信息
//					if(StringUtils.isEmpty(type) || "INFO".equals(type)){
//						products = productService.findByMainPicture(results);
//					}else if ("NUM".equals(type)){
//						//返回 识别编码
//						for (MatchingResult mResult : results) {
//							if (null == mResult) {
//								continue;
//							}
//							//是带路径的文件名
//							String mainPicture = mResult.getmStrName();
//							System.out.println("mainPicture=" + mainPicture);
//							String[] paths = mainPicture.split("/");
//							mainPicture = paths[paths.length - 1];
//							//去掉后缀名
//							String[] names = mainPicture.split("\\.");
//							mainPicture = names[0].trim();
//							System.out.println("mainPicture2=" + mainPicture);
//							productsNum.add(mainPicture);
//						}
//
//					}
//					resultMap.put("code", Code.SUCCESS);
//				}
//				/*System.out.println(object);
//				if (object instanceof MatchingResult[]) {
//					System.out.println("instanceof MatchingResult[]..");
//					MatchingResult[] strResult = (MatchingResult[]) object;
//					products = productService.findByMainPicture(strResult);
//					resultMap.put("code", Code.SUCCESS);
//				} else if (object instanceof MatchingResult){
//					System.out.println("instanceof MatchingResult..");
//					MatchingResult[] strResult = (MatchingResult[]) object;
//					products = productService.findByMainPicture(strResult);
//					resultMap.put("code", Code.SUCCESS);
//				}else{
//					System.out.println("instanceof false..");
//					resultMap.put("code", Code.ERROR);
//				}*/
//
//
//			} else {
//				resultMap.put("code", Code.ERROR_PARAM);
//			}
//			if (products != null && products.size() > 0) {
//				System.out.println("products.size="+products.size());
//				resultMap.put("products", products);
//			}else if (productsNum != null && productsNum.size() > 0) {
//				System.out.println("productsNum.size="+productsNum.size());
//				resultMap.put("products", productsNum);
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return resultMap;
//	}
//
//	/**
//	 *
//	 * @Title: ImageMatchInter
//	 * @Description: 将图片字符串信息转换成图片
//	 * @param: @param imgStr
//	 * @param: @return
//	 * @param: @throws Exception
//	 * @return: BufferedImage
//	 * @throws
//	 */
//	private BufferedImage generateImage(String imgStr) throws Exception {
//		if (StringUtils.isEmpty(imgStr)) {
//			return null;
//		}
//
//		BASE64Decoder decoder = new BASE64Decoder();
//		byte[] b = decoder.decodeBuffer(imgStr);
//		/*for (int i = 0; i < b.length; ++i) {
//			if (b[i] < 0) {
//				b[i] += 256;
//			}
//		}
//*/
//		ByteArrayInputStream in = new ByteArrayInputStream(b);
//		BufferedImage image = ImageIO.read(in);
//		String imgFilePath = "/data/test/user_img/user_load"+new Date().getTime()+".jpg";// 新生成的图片
//		OutputStream out = new FileOutputStream(imgFilePath);
//		out.write(b);
//		out.flush();
//		out.close();
//		return image;
//	}
//
//	//生成新图片
//	private String saveImg(String imgStr) throws Exception {
//		if (StringUtils.isEmpty(imgStr)) {
//			return null;
//		}
//
//		BASE64Decoder decoder = new BASE64Decoder();
//		byte[] b = decoder.decodeBuffer(imgStr);
//		/*for (int i = 0; i < b.length; ++i) {
//			if (b[i] < 0) {
//				b[i] += 256;
//			}
//		}
//*/
////		ByteArrayInputStream in = new ByteArrayInputStream(b);
////		BufferedImage image = ImageIO.read(in);
//		String imgFilePath = "/data/test/user_img/user_load"+new Date().getTime()+".jpg";// 新生成的图片
//		OutputStream out = new FileOutputStream(imgFilePath);
//		out.write(b);
//		out.flush();
//		out.close();
//		return imgFilePath;
//	}
//
//}
